package com.qyhl.webtv.basiclib.utils;

import android.content.Context;

import java.lang.reflect.Method;

/**
 * 刘海屏适配工具类
 * @author helin
 * @date 2018年8月6日17:41:36
 */
public class NotchSizeUtil {


    /**
     * 是否有刘海屏
     * @param ctx
     * @return
     */
    public static boolean hasNotchInScene( Context ctx ){
        if( hasNotchXIAOMI(ctx)||hasNotchHUAWEI(ctx)||hasNotchInOppo(ctx)||hasNotchInVivo(ctx) ){
            return true;
        }
        return false;
    }

    /**
     * XIAOMI
     * 是否是刘海屏手机：
     * true：是刘海屏；false：非刘海屏。
     * @return true
     */
    public static  boolean hasNotchXIAOMI(Context context){
//        return true;
        return  SystemPropertiesProxy.getInt(context,"ro.miui.notch",0) ==1;
//        return  SystemProperties.getInt("ro.miui.notch", 0) == 1;
    }

    /**
     * OPPO
     * 是否是刘海屏手机：
     * true：是刘海屏；false：非刘海屏。
     * @param context
     * @return true
     */
    public static boolean hasNotchInOppo(Context context) {
        return context.getPackageManager().hasSystemFeature("com.oppo.feature.screen.heteromorphism");
    }

    /**
     * HUAWEI
     * 是否是刘海屏手机：
     * true：是刘海屏；false：非刘海屏。
     * @param context
     * @return true
     */
    public static boolean hasNotchHUAWEI(Context context) {

        boolean ret = false;

        try {

            ClassLoader cl = context.getClassLoader();

            Class HwNotchSizeUtil = cl.loadClass("com.huawei.android.util.HwNotchSizeUtil");

            Method get = HwNotchSizeUtil.getMethod("hasNotchInScreen");

            ret = (boolean) get.invoke(HwNotchSizeUtil);

        } catch (ClassNotFoundException e) {


        } catch (NoSuchMethodException e) {


        } catch (Exception e) {


        } finally {

            return ret;

        }

    }


    /**
     * VIVO
     * 是否是刘海屏手机：
     * true：是刘海屏；false：非刘海屏。
     * @param context
     * @return true
     * @param context
     * @return
     */
    public static boolean hasNotchInVivo(Context context) {
        boolean hasNotch = false;
        try {
            ClassLoader cl = context.getClassLoader();
            Class FtFeature = cl.loadClass("android.util.FtFeature");
            Method get = FtFeature.getMethod("isFeatureSupport");
            hasNotch = (boolean) get.invoke(FtFeature, new Object[]{0x00000020});
        } catch (Exception e) {
            e.printStackTrace();
        }
        return hasNotch;
    }

}
